www.gusucode.com > C++ Primer 书籍源代码源码程序 > C++ Primer 书籍源代码源码程序/code/9/str_assignOps.cpp
//Download by http://www.NewXing.com /* * This file contains code from "C++ Primer, Fourth Edition", by Stanley B. * Lippman, Jose Lajoie, and Barbara E. Moo, and is covered under the * copyright and warranty notices given in that book: * * "Copyright (c) 2005 by Objectwrite, Inc., Jose Lajoie, and Barbara E. Moo." * * * "The authors and publisher have taken care in the preparation of this book, * but make no expressed or implied warranty of any kind and assume no * responsibility for errors or omissions. No liability is assumed for * incidental or consequential damages in connection with or arising out of the * use of the information or programs contained herein." * * Permission is granted for this code to be used for educational purposes in * association with the book, given proper citation if and when posted or * reproduced.Any commercial use of this code requires the explicit written * permission of the publisher, Addison-Wesley Professional, a division of * Pearson Education, Inc. Send your request for permission, stating clearly * what code you would like to use, and in what specific way, to the following * address: * * Pearson Education, Inc. * Rights and Contracts Department * 75 Arlington Street, Suite 300 * Boston, MA 02216 * Fax: (617) 848-7047 */ #include "seq_preamble.h" vector<char> c_vec; //string s("some string"), s2("some other string"); string s, s2; int main() { s = "some string"; s2 = "some other string"; // 3 equivalent ways to insert all the characters from s2 at beginning of s // insert iterator range before s.begin() s.insert(s.begin(), s2.begin(), s2.end()); cout << "insert iterators version: " << s << endl; s = "some string"; // insert copy of s2 before position 0 in s s.insert(0, s2); cout << "insert string at given position: " << s << endl; s = "some string"; // insert s2.size() characters from s2 starting at s2[0] before s[0] s.insert(0, s2, 0, s2.size()); cout << "insert positional version: " << s << endl; s = ""; c_vec.push_back('a'); // temporary hack to workaround g++ bug // replace characters in s by elements from c_vec s.insert(s.begin(), c_vec.begin(), c_vec.end()); s.insert(s.size(), 5, '!'); // insert five exclamation points at end of s cout << s << endl; s.erase(s.size() - 5, 5); // erase last five characters from s cout << s << endl; { char *cp = "Stately plump Buck"; string s; s.assign(cp, 7); // s == "Stately" cout << s << endl; s.insert(s.size(), cp + 7); // s == "Stately plump Buck" cout << s << endl; } { string s("C++ Primer"); // initialize s to "C++ Primer" s.append(" 3rd Ed."); // s == "C++ Primer 3rd Ed." // equivalent to s.append(" 3rd Ed.") s.insert(s.size(), " 3rd Ed."); cout << s << endl; // starting at position 11, erase 3 characters and then insert "4th" s.replace(11, 3, "4th"); // s == "C++ Primer 4th Ed." cout << s << endl; // equivalent way to replace "3rd" by "4th" s.erase(11, 3); // s == "C++ Primer Ed." s.insert(11, "4th"); // s == "C++ Primer 4th Ed." cout << s << endl; s.replace(11, 3, "4th"); // s == "C++ Primer 4th Ed." cout << s << endl; s.replace(11, 3, "Fourth"); // s == "C++ Primer Fourth Ed." cout << s << endl; { string s("C++ Primer, 3rd Ed."); s.replace(s.find("3rd"), 3, "Fourth"); cout << s << endl; } } return 0; }